Micron Document
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| SparkN0de-git | SparkN0de |
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


Commit 22fceec1fcda801d9a5a4d5f41c522b51a30732e


Parents : 328cc80
Author : Ivan <ivan@quad4.io>
Signature : Invalid signer <e46112d44649266d71fe2193e00a4710>, author is <ivan@quad4.io>
Date : 2026-07-10T01:44:00-05:00

fix(map_overlay_manager, rnsh_manager, map_overlays): improve error handling, return types, and default values

Changes
Diff

diff --git a/meshchatx/src/backend/database/map_overlays.py b/meshchatx/src/backend/database/map_overlays.py
index 2037e82b..1714bf42 100644
--- a/meshchatx/src/backend/database/map_overlays.py
+++ b/meshchatx/src/backend/database/map_overlays.py
@@ -110,7 +110,7 @@ class MapOverlaysDAO:
now,
),
)
- return int(cur.lastrowid)
+ return int(cur.lastrowid or 0)
def update_fields(self, overlay_id: int, **fields) -> None:
if not fields:

diff --git a/meshchatx/src/backend/map_overlay_manager.py b/meshchatx/src/backend/map_overlay_manager.py
index a6cff9a0..93dd651a 100644
--- a/meshchatx/src/backend/map_overlay_manager.py
+++ b/meshchatx/src/backend/map_overlay_manager.py
@@ -134,7 +134,9 @@ class MapOverlayManager:
os.makedirs(path, exist_ok=True)
return path
- def cache_path_for(self, identity_hash: str, overlay_id: int, fmt: str) -> str:
+ def cache_path_for(
+ self, identity_hash: str, overlay_id: int, fmt: str
+ ) -> tuple[str, str]:
rel = os.path.join(identity_hash, f"{overlay_id}.{fmt}")
return os.path.join(self.overlay_root(), rel), rel
@@ -599,8 +601,8 @@ class MapOverlayManager:
result = await asyncio.wait_for(
fetcher.fetch(
destination_hash=first.destination_hash,
- group=first.group_name,
- repository=first.repository,
+ group=first.group_name or "",
+ repository=first.repository or "",
paths=paths,
ref=first.ref,
job_id=job_id,
@@ -762,7 +764,7 @@ class MapOverlayManager:
fields["ref"] = normalize_ref(data["ref"])
if fields:
self.database.map_overlays.update_fields(overlay_id, **fields)
- return self.get_overlay(identity_hash, overlay_id)
+ return self.get_overlay(identity_hash, overlay_id) or {}
def delete_overlay(self, identity_hash: str, overlay_id: int) -> bool:
row = self.get_overlay(identity_hash, overlay_id)
@@ -812,7 +814,8 @@ class MapOverlayManager:
)
row = self.get_overlay(identity_hash, overlay_id)
filename = _safe_filename(
- row.get("name") if row else "overlay", EXTENSIONS[target_format]
+ (row.get("name") or "overlay") if row else "overlay",
+ EXTENSIONS[target_format],
)
return out, CONTENT_TYPES[target_format], filename

diff --git a/meshchatx/src/backend/rnsh_manager.py b/meshchatx/src/backend/rnsh_manager.py
index 4e5bf0e4..d21a3bcf 100644
--- a/meshchatx/src/backend/rnsh_manager.py
+++ b/meshchatx/src/backend/rnsh_manager.py
@@ -422,6 +422,9 @@ class RNSHSession:
self.last_exit_code = None
self.last_command = " ".join(shlex.quote(part) for part in command)
+ notify_failure = False
+ failure: Exception | None = None
+
try:
if self._supports_pty():
self._start_with_pty(command)
@@ -445,6 +448,7 @@ class RNSHSession:
if notify_failure:
self.manager._on_session_change(self)
self.manager.save()
+ assert failure is not None
raise failure
self.manager._on_session_change(self)


──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────